using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WMS.WebApiWrite.DTO
{
    /// <summary>
    /// 盘点信息DTO（用于新增和编辑操作）
    /// </summary>
    public class InventoryDTO
    {
        /// <summary>
        /// 盘点ID（编辑时必填，新增时为null）
        /// </summary>
        public int? InventoryId { get; set; }

        /// <summary>
        /// 盘点编号（后端自动生成，格式：PDDH+4位随机数）
        /// </summary>
        public string? InventoryCode { get; set; }

        /// <summary>
        /// 仓库ID
        /// </summary>
        public int WarehouseId { get; set; }
        /// <summary>
        /// 盘点类型ID
        /// </summary>
        public int InventoryTypeId { get; set; }

        /// <summary>
        /// 处理人ID
        /// </summary>
        public int HandlerrId { get; set; }

        /// <summary>
        /// 盘点时间
        /// </summary>
        public DateTime InventoryDateTime { get; set; }

        /// <summary>
        /// 结束盘点时间
        /// </summary>
        public DateTime InventoryEndTime { get; set; }

        /// <summary>
        /// 盘点内容
        /// </summary>
        public string InventoryContent { get; set; }

        /// <summary>
        /// 盘点数量
        /// </summary>
        public string? InventoryQuantity { get; set; }

        /// <summary>
        /// 盘盈数量
        /// </summary>
        public string? SurplusQuantity { get; set; }

        /// <summary>
        /// 盘亏数量
        /// </summary>
        public string? InventoryShortageQuantity { get; set; }

        /// <summary>
        /// 盘盈金额
        /// </summary>
        public string? SurplusAmount { get; set; }

        /// <summary>
        /// 盘亏金额
        /// </summary>
        public string? InventoryLossAmount { get; set; }

        /// <summary>
        /// 数据状态（1:保存草稿 2:保存为新增 3:保存）
        /// </summary>
        public int DataStatus { get; set; } = 2;

        /// <summary>
        /// 盘点明细列表
        /// </summary>
        public List<InventoryCheckDetailsDTO> DetailsList { get; set; } = new List<InventoryCheckDetailsDTO>();

        /// <summary>
        /// 上传附件列表
        /// </summary>
        public List<UploadAttachmentDTO> AttachmentList { get; set; } = new List<UploadAttachmentDTO>();

        /// <summary>
        /// 操作人名称
        /// </summary>
        public string OperatorName { get; set; }
    }
}

